JasmineJS টেস্টিং ফ্রেমওয়ার্কের রিপোর্টিং এবং আউটপুট কাস্টমাইজেশন ফিচার অনেক গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি আপনার টেস্টিং ফলাফলকে আরও স্পষ্ট এবং বোঝার উপযোগী করতে চান। JasmineJS একটি ডিফল্ট রিপোর্টার প্রদান করে, তবে আপনি চাইলে কাস্টম রিপোর্টার তৈরি করতে পারেন বা ডিফল্ট রিপোর্টার কাস্টমাইজ করতে পারেন।
রিপোর্টার বা আউটপুট কাস্টমাইজেশন এর মাধ্যমে আপনি টেস্টের রেজাল্ট, ফলাফল ফর্ম্যাট, ফেইলিয়ারের ডিটেইলস এবং আরও অনেক কিছু কাস্টমাইজ করতে পারবেন।
JasmineJS ডিফল্ট রিপোর্টার
JasmineJS ডিফল্ট রিপোর্টার হচ্ছে ConsoleReporter, যা টেস্টের ফলাফল কনসোল আউটপুট হিসেবে প্রদর্শন করে। এর মাধ্যমে আপনি প্রতিটি টেস্টের স্ট্যাটাস, পাস বা ফেইল, এবং ডিটেইলস দেখতে পাবেন।
ডিফল্ট রিপোর্টারের আউটপুট:
Started
. // Indicates a passing test
F // Indicates a failing test
. // Passing test again
Finished in 0.12345 seconds
3 specs, 1 failure, 0 pending, 1 total failure
এখানে:
.: টেস্টটি পাস করেছে।F: টেস্টটি ব্যর্থ হয়েছে।
কাস্টম রিপোর্টার তৈরি করা
JasmineJS আপনাকে কাস্টম রিপোর্টার তৈরি করার অনুমতি দেয়, যার মাধ্যমে আপনি টেস্ট আউটপুট কাস্টমাইজ করতে পারেন। কাস্টম রিপোর্টার তৈরির জন্য, আপনাকে Jasmine.Reporter ক্লাস ইনহেরিট করতে হবে এবং এর মধ্যে কয়েকটি মেথড অ্যাক্সেস করতে হবে।
কাস্টম রিপোর্টার তৈরির উদাহরণ:
function CustomReporter() {
this.reportSpecResults = function(spec) {
console.log("Spec: " + spec.description);
if (spec.results().passed()) {
console.log("Result: Passed");
} else {
console.log("Result: Failed");
console.log("Failures: " + spec.results().failedCount);
}
};
this.reportRunnerResults = function(runner) {
console.log("Test run completed.");
console.log("Total Specs: " + runner.specs().length);
console.log("Failed Specs: " + runner.failedCount);
};
}
// Jasmine এ কাস্টম রিপোর্টার যোগ করা
jasmine.getEnv().addReporter(new CustomReporter());
এখানে:
reportSpecResults(spec): প্রতিটি টেস্ট স্পেসিফিকেশন (spec) এর ফলাফল রিপোর্ট করে। টেস্টটি পাস হলে"Result: Passed"এবং ব্যর্থ হলে"Result: Failed"আউটপুট হয়।reportRunnerResults(runner): টেস্ট রান শেষে সমস্ত ফলাফল রিপোর্ট করে, মোট স্পেক এবং ব্যর্থ স্পেকের সংখ্যা প্রদর্শন করে।
JasmineJS এ রিপোর্টারের কাস্টম আউটপুট ফরম্যাট
আপনি কাস্টম রিপোর্টার ব্যবহার করে আপনার টেস্ট আউটপুটের ফরম্যাট পরিবর্তন করতে পারেন, যেমন:
- টেস্টের পাস হওয়া বা ব্যর্থ হওয়া ডিটেইলস।
- বিভিন্ন কনসোল স্টাইলিং (যেমন রঙ, টেক্সট স্টাইল)।
উদাহরণ: কনসোল আউটপুট কাস্টমাইজেশন
function CustomReporter() {
this.reportSpecResults = function(spec) {
console.log("Spec: " + spec.description);
if (spec.results().passed()) {
console.log("%cResult: Passed", "color: green");
} else {
console.log("%cResult: Failed", "color: red");
const failures = spec.results().getItems().filter(function(item) {
return item.failed;
});
failures.forEach(function(failure) {
console.log("%c" + failure.message, "color: red");
});
}
};
this.reportRunnerResults = function(runner) {
console.log("Test run completed.");
console.log("Total Specs: " + runner.specs().length);
console.log("Failed Specs: " + runner.failedCount);
};
}
jasmine.getEnv().addReporter(new CustomReporter());
এখানে:
%c: এটি কনসোল স্টাইলিং এর জন্য ব্যবহৃত হয়। এখানে"color: green"এবং"color: red"ব্যবহার করা হয়েছে পাস বা ফেইল হওয়া টেস্টের জন্য।
JasmineJS রিপোর্টার এবং আউটপুট কাস্টমাইজেশন গঠন
JasmineJS এ কাস্টম রিপোর্টার তৈরি করার সময় আপনাকে কিছু গুরুত্বপূর্ণ ফাংশন ব্যবহার করতে হবে:
reportSpecResults(spec): এটি একটি স্পেসিফিকেশন বা টেস্ট স্পেসের ফলাফল রিপোর্ট করে।reportRunnerResults(runner): এটি সমস্ত টেস্ট রান শেষে রিপোর্ট করে, যেমন মোট স্পেকস এবং ব্যর্থ স্পেকস এর সংখ্যা।
এছাড়াও, আপনি রিপোর্টারের আউটপুটের ফরম্যাট কাস্টমাইজ করতে পারেন এবং এগুলি কনসোল, HTML, বা অন্য কোন আউটপুট স্ট্রাকচারে প্রদর্শন করতে পারেন।
JasmineJS Test Output কাস্টমাইজেশন
JasmineJS এর Test Output কাস্টমাইজেশন দ্বারা আপনি আউটপুট ফাইল সেভ, লগিং, অথবা এমনকি গ্রাফিকাল রিপোর্টিং সিস্টেমেও আউটপুট পাঠাতে পারেন। এখানে আপনি কাস্টম রিপোর্টার ব্যবহার করে JSON, XML বা HTML ফরম্যাটে আউটপুট তৈরি করতে পারেন।
উদাহরণ: JSON আউটপুট কাস্টমাইজেশন
function JsonReporter() {
this.reportSpecResults = function(spec) {
const result = {
description: spec.description,
status: spec.results().passed() ? "Passed" : "Failed"
};
const fs = require('fs');
fs.appendFileSync('test-results.json', JSON.stringify(result) + '\n');
};
this.reportRunnerResults = function(runner) {
const summary = {
totalSpecs: runner.specs().length,
failedSpecs: runner.failedCount
};
const fs = require('fs');
fs.appendFileSync('test-summary.json', JSON.stringify(summary) + '\n');
};
}
jasmine.getEnv().addReporter(new JsonReporter());
এখানে:
- JSON ফাইল
test-results.jsonএবংtest-summary.jsonতৈরি হবে, যা টেস্ট ফলাফল এবং সারাংশ রিপোর্ট করবে।
JasmineJS রিপোর্টার কাস্টমাইজেশনের সুবিধা
- সারাংশ এবং বিস্তারিত রিপোর্ট: আপনি টেস্টের বিস্তারিত ফলাফল এবং সারাংশ তৈরি করতে পারেন, যা পরবর্তীতে ব্যবহৃত হতে পারে।
- রঙিন এবং স্টাইলিং আউটপুট: কনসোল আউটপুট স্টাইল এবং রঙ ব্যবহার করে রিপোর্টকে আরও স্পষ্ট এবং আকর্ষণীয় করা যায়।
- বিভিন্ন আউটপুট ফরম্যাট: JSON, XML, HTML ইত্যাদি ফরম্যাটে টেস্ট আউটপুট তৈরি করা সম্ভব, যা টেস্ট ডেটা পদ্ধতিগতভাবে সংরক্ষণ এবং বিশ্লেষণ করতে সাহায্য করে।
সারাংশ
JasmineJS এর মাধ্যমে আপনি কাস্টম রিপোর্টার তৈরি করে বা ডিফল্ট রিপোর্টার কাস্টমাইজ করে টেস্ট আউটপুটের আকার এবং ফরম্যাট নিয়ন্ত্রণ করতে পারেন। এই কাস্টম রিপোর্টারগুলো ব্যবহার করে আপনি টেস্ট ফলাফলকে আরও স্পষ্ট, বিশদ এবং বুঝতে সহজ করে তুলতে পারেন, যা পরবর্তী বিশ্লেষণের জন্যও উপকারী। JasmineJS এর রিপোর্টার কাস্টমাইজেশন আপনাকে আপনার টেস্টের প্রয়োজনীয় আউটপুট ফরম্যাট তৈরি করার পূর্ণ স্বাধীনতা দেয়।
JasmineJS-এ Reporter হলো একটি কাস্টম কম্পোনেন্ট যা টেস্টের ফলাফল প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি টেস্ট রান করার সময় টেস্টের স্টেটাস (যেমন, পাস বা ফেল), ডিটেইলস এবং আউটপুট প্রদর্শন করে। রিপোর্টার টেস্টের ইনফরমেশন সংগ্রহ করে এবং এটিকে একটি সহজে পড়া ফরম্যাটে আউটপুট করে, যা ডেভেলপারদের জন্য টেস্টিং প্রক্রিয়াকে আরও স্বচ্ছ এবং ব্যবস্থাপনা সহজ করে তোলে।
JasmineJS-এর Reporter কাস্টমাইজেশন করার মাধ্যমে আপনি আপনার টেস্ট ফলাফল কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করতে পারেন। JasmineJS ডিফল্ট রিপোর্টার প্রদান করে, তবে আপনি নিজের প্রয়োজন অনুযায়ী কাস্টম রিপোর্টারও তৈরি করতে পারেন।
Reporter এর কাজ
JasmineJS এর রিপোর্টার মূলত নিম্নলিখিত কাজগুলো করে থাকে:
- টেস্টের স্টেটাস রেকর্ড করা: JasmineJS যখন কোনো টেস্ট রান করে, তখন এটি প্রতিটি টেস্টের স্টেটাস (যেমন, পাস, ফেল বা স্কিপ) রেকর্ড করে। Reporter এই তথ্য সংগ্রহ করে এবং টেস্টের ফলাফল প্রদর্শন করে।
- ডিটেইলস প্রদান: টেস্টের ফলাফল শুধু পাস বা ফেল হওয়া নয়, বরং যদি কোনো টেস্ট ফেল হয় তবে তার সাথে এররর মেসেজ বা stack trace প্রদান করে, যা ডেভেলপারকে সমস্যার উৎস চিহ্নিত করতে সাহায্য করে।
- কাস্টম আউটপুট তৈরি: আপনি যদি চান, তবে JasmineJS কাস্টম রিপোর্টার তৈরি করতে পারে যা আপনার প্রয়োজন অনুযায়ী আউটপুট ফরম্যাট তৈরি করতে সক্ষম। যেমন, কোনো নির্দিষ্ট ফরম্যাটে JSON আউটপুট বা HTML ফরম্যাটে ফলাফল দেখানো।
JasmineJS এর ডিফল্ট Reporter
JasmineJS ডিফল্টরূপে একটি কনসোল রিপোর্টার প্রদান করে, যা টেস্টের ফলাফল কনসোলে (যেমন, টার্মিনাল বা ব্রাউজারের কনসোল) প্রদর্শন করে। এতে সাধারণত টেস্টের পাস বা ফেল হওয়া, টেস্টের নাম, এবং যদি কোনো টেস্ট ফেল হয় তবে এরর মেসেজও প্রদর্শিত হয়।
উদাহরণ: ডিফল্ট কনসোল আউটপুট
User Authentication
✓ should create a new user
✓ should login successfully
Product Management
✗ should add a new product (0.45s)
Error: Product already exists
✓ should update product
এখানে, ✓ চিহ্নিত টেস্টগুলো পাস, এবং ✗ চিহ্নিত টেস্টটি ফেল হয়েছে। ফলস্বরূপ, আপনি সহজেই জানবেন কোন টেস্টগুলো সফল এবং কোনগুলো ব্যর্থ হয়েছে।
কাস্টম Reporter তৈরি করা
আপনি যদি JasmineJS-এ কাস্টম রিপোর্টার তৈরি করতে চান, তাহলে Reporter API ব্যবহার করতে পারেন। কাস্টম রিপোর্টার তৈরি করার জন্য আপনাকে jasmine.Reporter ক্লাসটি উপস্থাপন করতে হবে এবং তার বিভিন্ন মেথডগুলোকে override করতে হবে, যেমন specDone(), suiteDone(), ইত্যাদি।
উদাহরণ: কাস্টম Reporter
function MyCustomReporter() {
this.specDone = function(result) {
console.log('Spec: ' + result.description + ' was ' + result.status);
};
this.suiteDone = function(result) {
console.log('Suite: ' + result.description + ' finished with status ' + result.status);
};
}
jasmine.getEnv().addReporter(new MyCustomReporter());
এই কাস্টম রিপোর্টারে:
specDone(result)মেথডটি প্রতিটি টেস্টের ফলাফল (spec) প্রদর্শন করে।suiteDone(result)মেথডটি টেস্ট স্যুটের সম্পূর্ণ ফলাফল প্রদর্শন করে।
JasmineJS এর Reporter কনফিগারেশন
JasmineJS রিপোর্টার কনফিগারেশন করার জন্য আপনি jasmine.getEnv().addReporter() মেথড ব্যবহার করে যেকোনো কাস্টম রিপোর্টার যোগ করতে পারেন। এটি আপনাকে আপনার টেস্ট আউটপুট কাস্টমাইজ করার পুরোপুরি স্বাধীনতা দেয়। আপনি চাইলে কনসোল আউটপুট, ফাইল আউটপুট, বা HTML/JSON আউটপুট করতে পারেন।
উদাহরণ: কাস্টম Reporter অ্যাড করা
var jasmineEnv = jasmine.getEnv();
jasmineEnv.addReporter(new jasmine.ConsoleReporter({
print: function(msg) { console.log(msg); },
showColors: true
}));
// Jasmine execute
jasmineEnv.execute();
এখানে, একটি কাস্টম ConsoleReporter তৈরি করা হয়েছে যা print() ফাংশনের মাধ্যমে আউটপুট দেখাবে এবং showColors ফ্ল্যাগের মাধ্যমে আউটপুটে রঙ প্রদর্শন করবে।
JasmineJS এর Reporter কাস্টমাইজেশন এবং ব্যবহারের সুবিধা
- ব্যবহারকারীর প্রয়োজন অনুযায়ী আউটপুট: কাস্টম রিপোর্টার ব্যবহার করে আপনি আপনার টেস্ট ফলাফল যে কোনো ফরম্যাটে (JSON, HTML, ইত্যাদি) দেখতে পারেন যা আপনার প্রজেক্টের জন্য উপযুক্ত।
- টেস্টের ফলাফল বিশ্লেষণ: কাস্টম রিপোর্টার আপনাকে আরও ডিটেইলস্ আউটপুট প্রদান করতে পারে, যেমন ইন্টারনাল লগিং, বিশেষ ইভেন্টের ট্র্যাকিং, বা অন্য কোনো ডিবাগিং তথ্য।
- স্মার্ট রিপোর্টিং: আপনি যদি বড় সিস্টেমের টেস্টিং করছেন, তাহলে কাস্টম রিপোর্টার ব্যবহার করে টেস্ট ফলাফলগুলি আরও সুনির্দিষ্টভাবে ক্যাটাগরি বা স্টেটাস অনুযায়ী সাজানো যেতে পারে, যেমন: “Critical Errors”, “Warnings”, “Skipped Tests” ইত্যাদি।
সারাংশ
- JasmineJS এর Reporter টেস্টের ফলাফল প্রদর্শন করার জন্য ব্যবহৃত হয় এবং ডিফল্ট রিপোর্টার সাধারণত কনসোলে ফলাফল প্রদর্শন করে।
- কাস্টম রিপোর্টার তৈরি করে আপনি টেস্ট আউটপুট কাস্টমাইজ করতে পারেন এবং আপনার প্রয়োজন অনুযায়ী আউটপুট ফরম্যাট বা বিস্তারিত দেখাতে পারেন।
- JasmineJS এর Reporter আপনাকে কাস্টমাইজড টেস্ট আউটপুট এবং ডিবাগিং সুবিধা প্রদান করে, যা টেস্ট ফলাফল বিশ্লেষণকে আরও কার্যকরী এবং ফলপ্রসূ করে তোলে।
JasmineJS এ Built-in Reporters ব্যবহার করার মাধ্যমে আপনি আপনার টেস্ট রানিংয়ের পরিপ্রেক্ষিতে রিপোর্ট দেখতে পারেন। Jasmine এর দুটি প্রাথমিক বিল্ট-ইন রিপোর্টার হল Spec Reporter এবং Dot Reporter। এই রিপোর্টারগুলি টেস্টের অবস্থা ও ফলাফল সম্পর্কে সহজ এবং পরিষ্কার তথ্য সরবরাহ করে, যা টেস্ট রান করার পর আপনি দ্রুত জানতে পারবেন কোন টেস্টগুলি সফল হয়েছে এবং কোনগুলো ব্যর্থ হয়েছে।
Spec Reporter
Spec Reporter হলো JasmineJS এর ডিফল্ট রিপোর্টার। এটি টেস্টের বিস্তারিত আউটপুট দেখায়, যেখানে প্রতিটি টেস্ট কেসের নাম এবং তার সফল বা ব্যর্থ হওয়ার তথ্য প্রদর্শিত হয়। এটি সাধারণত ডেভেলপারদের জন্য উপকারী, যেহেতু এটি তাদেরকে টেস্টের সঠিক ফলাফল এবং তার বিবরণ সরবরাহ করে।
Spec Reporter এর আউটপুট
Spec Reporter এর মাধ্যমে আপনি টেস্টের বিস্তারিত আউটপুট দেখতে পারবেন, যেমন:
- প্রতিটি টেস্টের নাম
- টেস্টের ফলাফল (pass/fail)
- যদি কোনো টেস্ট ব্যর্থ হয়, তবে ত্রুটির বিবরণ
My spec suite
√ should add two numbers correctly
√ should subtract numbers correctly
× should multiply numbers correctly (1 failed)
Failures:
1) My spec suite should multiply numbers correctly
Error: Expected 6 to equal 12.
Spec Reporter কনফিগারেশন
JasmineJS এর Spec Reporter কনফিগারেশন করার জন্য, আপনাকে Jasmine এর কনফিগারেশন ফাইলে (যেমন jasmine.json) রিপোর্টারটি সক্ষম করতে হবে।
// jasmine.json কনফিগারেশন ফাইল
{
"spec_dir": "spec",
"spec_files": [
"tests/**/*.js"
],
"helpers": [
"helpers/**/*.js"
],
"reporters": [
"spec" // Spec Reporter ইনস্টল করা
]
}
এছাড়া, JasmineCLI ব্যবহার করে Spec Reporter সক্ষম করা সম্ভব:
jasmine --reporter=spec
Dot Reporter
Dot Reporter হলো আরেকটি বিল্ট-ইন রিপোর্টার যা টেস্টের ফলাফলকে ডট (.) এবং এক্স (x) চিহ্নের মাধ্যমে প্রদর্শন করে। প্রতিটি টেস্টের জন্য একটি ডট (.) ব্যবহার করা হয় যদি টেস্টটি সফল হয় এবং এক্স (x) ব্যবহার করা হয় যদি টেস্টটি ব্যর্থ হয়। এই রিপোর্টারটি দ্রুত, সংক্ষিপ্ত আউটপুট প্রদান করে, যা বিশেষভাবে উপকারী যখন আপনি বড় স্যুট বা অনেক টেস্ট চালাচ্ছেন এবং পুরো টেস্টের ফলাফল দেখতে চান দ্রুত।
Dot Reporter এর আউটপুট
Dot Reporter এর আউটপুট খুবই সংক্ষিপ্ত থাকে:
....x....x..x.....
এখানে:
.: সফল টেস্ট কেসx: ব্যর্থ টেস্ট কেস
এটি একটি খুব দ্রুত এবং কমপ্যাক্ট পদ্ধতি, যেখানে আপনি সহজেই জানতে পারেন কতটি টেস্ট সফল হয়েছে এবং কতটি ব্যর্থ হয়েছে।
Dot Reporter কনফিগারেশন
Dot Reporter কনফিগার করতে, Jasmine এর কনফিগারেশন ফাইলে রিপোর্টারটি যোগ করতে হবে।
// jasmine.json কনফিগারেশন ফাইল
{
"spec_dir": "spec",
"spec_files": [
"tests/**/*.js"
],
"helpers": [
"helpers/**/*.js"
],
"reporters": [
"dot" // Dot Reporter ইনস্টল করা
]
}
এছাড়া, JasmineCLI ব্যবহার করে Dot Reporter সক্ষম করা সম্ভব:
jasmine --reporter=dot
Spec Reporter এবং Dot Reporter এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Spec Reporter | Dot Reporter |
|---|---|---|
| আউটপুট স্টাইল | বিস্তারিত আউটপুট (পাস/ফেইল সহ) | কমপ্যাক্ট আউটপুট (ডট/এক্স চিহ্ন) |
| ব্যবহারের সুবিধা | টেস্টের বিস্তারিত ফলাফল জানতে সুবিধাজনক | দ্রুত এবং কমপ্যাক্ট আউটপুট, বড় স্যুটে উপকারী |
| ত্রুটির বিবরণ | ব্যর্থ টেস্টের বিস্তারিত ত্রুটি বার্তা | ব্যর্থ টেস্টের কোনো বিস্তারিত বার্তা নেই |
JasmineJS এ কাস্টম রিপোর্টার ব্যবহার করা
JasmineJS তে আপনি আপনার কাস্টম রিপোর্টারও তৈরি করতে পারেন। কাস্টম রিপোর্টার তৈরির জন্য আপনাকে Jasmine এর CustomReporter ইন্টারফেস অনুসরণ করতে হবে এবং প্রয়োজনীয় ফাংশন যেমন specDone বা suiteDone ইমপ্লিমেন্ট করতে হবে।
function CustomReporter() {
this.specDone = function(result) {
console.log(result.status + ": " + result.fullName);
};
}
jasmine.getEnv().addReporter(new CustomReporter());
এখানে CustomReporter ক্লাস একটি সহজ কাস্টম রিপোর্টার তৈরি করেছে, যা প্রতিটি টেস্টের ফলাফল কনসোলে লগ করবে।
সারাংশ
JasmineJS এর Built-in Reporters যেমন Spec Reporter এবং Dot Reporter আপনাকে টেস্টের ফলাফল প্রদর্শনে সহায়তা করে। Spec Reporter বিস্তারিত আউটপুট সরবরাহ করে, যেখানে প্রতিটি টেস্টের নাম এবং তার ফলাফল দেখানো হয়, এবং Dot Reporter কমপ্যাক্ট আউটপুট প্রদর্শন করে যা দ্রুত ফলাফল জানাতে উপকারী। আপনি চাইলে JasmineJS এ কাস্টম রিপোর্টারও তৈরি করতে পারেন আপনার নির্দিষ্ট প্রয়োজন অনুসারে।
JasmineJS এ Custom Reporter তৈরি করে আপনি টেস্টের ফলাফল কাস্টমাইজ করতে পারেন। এটি মূলত Jasmine এর টেস্টিং প্রক্রিয়া থেকে যে আউটপুট পাওয়া যায়, তা কাস্টম আউটপুট ফরম্যাটে দেখানোর জন্য ব্যবহৃত হয়। কাস্টম রিপর্টার তৈরি করলে আপনি টেস্টের বিস্তারিত তথ্য, যেমন পাস, ফেইল, স্কিপড টেস্টের তথ্য এবং অন্যান্য কাস্টম মেসেজ ফরম্যাটে প্রদর্শন করতে পারবেন।
JasmineJS এর ডিফল্ট রিপর্টার সাধারণত টেস্টের পাস বা ফেইল হওয়া সম্পর্কে মৌলিক তথ্য প্রদান করে, কিন্তু যদি আপনি আরো ডিটেইলড, ফরম্যাটেড বা বিশেষ ধরণের আউটপুট চান, তাহলে কাস্টম রিপর্টার তৈরি করা যেতে পারে।
Custom Reporter তৈরির পদ্ধতি
JasmineJS এ কাস্টম রিপর্টার তৈরি করতে jasmine.Reporter ক্লাস ব্যবহার করতে হয়। আপনি এই ক্লাসটি এক্সটেন্ড করে আপনার কাস্টম রিপোর্টারের ফাংশনালিটি তৈরি করতে পারেন।
Custom Reporter এর কাঠামো
- Reporter Class তৈরি:
jasmine.Reporterক্লাস এক্সটেন্ড করে একটি নতুন ক্লাস তৈরি করতে হবে। specStarted,specDone,suiteStarted,suiteDoneমেথডগুলির মাধ্যমে টেস্টের শুরু এবং শেষের বিভিন্ন ইভেন্ট ট্র্যাক করতে হবে।log()ফাংশন ব্যবহার করে টেস্টের ফলাফল কাস্টম আউটপুট হিসেবে দেখানো যাবে।
Custom Reporter এর উদাহরণ
function CustomReporter() {
this.specStarted = function(result) {
console.log('Starting test: ' + result.description);
};
this.specDone = function(result) {
if (result.status === 'passed') {
console.log('Test Passed: ' + result.description);
} else {
console.log('Test Failed: ' + result.description);
console.log('Reason: ' + result.failedExpectations[0].message);
}
};
this.suiteStarted = function(result) {
console.log('Starting suite: ' + result.description);
};
this.suiteDone = function(result) {
console.log('Suite Completed: ' + result.description);
console.log('Total Specs: ' + result.specs.length);
console.log('Passing: ' + result.passedCount + ', Failing: ' + result.failedCount);
};
}
// Jasmine এ Custom Reporter ব্যবহার
jasmine.getEnv().addReporter(new CustomReporter());
এখানে:
specStarted(result): এটি একটি টেস্ট শুরু হলে কল হয় এবং টেস্টের বর্ণনা আউটপুট হিসেবে দেখায়।specDone(result): এটি একটি টেস্ট শেষ হলে কল হয় এবং পাস বা ফেইল হওয়া অনুযায়ী আউটপুট দেখায়।suiteStarted(result): এটি একটি টেস্ট স্যুট শুরু হলে কল হয়।suiteDone(result): এটি একটি টেস্ট স্যুট শেষ হলে কল হয় এবং স্যুটের মোট টেস্ট, পাস এবং ফেইল সংখ্যার তথ্য প্রদান করে।
Custom Reporter এর মাধ্যমে কাস্টম আউটপুট
JasmineJS এ কাস্টম রিপর্টার ব্যবহার করে আপনি টেস্টের ফলাফল কাস্টম আউটপুট ফরম্যাটে দেখতে পারেন। যেমন টেস্টের পাস এবং ফেইল হওয়া রিপোর্ট একটি নির্দিষ্ট স্টাইলে প্রদর্শন করা, অথবা ইভেন্ট লগিং এর মাধ্যমে ডিটেইলড আউটপুট প্রস্তুত করা।
কাস্টম আউটপুটের উদাহরণ:
function CustomReporter() {
this.specStarted = function(result) {
console.log('⏳ Starting Test: ' + result.description);
};
this.specDone = function(result) {
let status = result.status === 'passed' ? '✅ Passed' : '❌ Failed';
let details = result.failedExpectations.length > 0 ? `\n Error: ${result.failedExpectations[0].message}` : '';
console.log(`${status}: ${result.description}${details}`);
};
this.suiteStarted = function(result) {
console.log(`\n📂 Suite Started: ${result.description}`);
};
this.suiteDone = function(result) {
console.log(`\n📂 Suite Completed: ${result.description}`);
console.log(`Total: ${result.totalSpecsDefined} Specs`);
console.log(`Passed: ${result.passedSpecs.length}, Failed: ${result.failedSpecs.length}`);
};
}
// Jasmine এ Custom Reporter যোগ করা
jasmine.getEnv().addReporter(new CustomReporter());
এখানে:
- ইমোজি ব্যবহার: টেস্টের স্ট্যাটাস বা স্যুটের নামের আগে ইমোজি ব্যবহার করে আউটপুটকে আরো ইন্টারঅ্যাকটিভ এবং আকর্ষণীয় করা হয়েছে।
- কাস্টম মেসেজ: টেস্টটি সফল হলে "✅ Passed", ব্যর্থ হলে "❌ Failed" মেসেজ ব্যবহার করা হয়েছে এবং ত্রুটির বিস্তারিত তথ্য প্রিন্ট করা হয়েছে।
- Suite Completion: স্যুটের সমাপ্তিতে মোট টেস্ট, পাস এবং ফেইল টেস্টের সংখ্যা প্রদর্শন করা হয়েছে।
Custom Reporter কাস্টমাইজেশন
JasmineJS এর Custom Reporter তৈরির মাধ্যমে আপনি টেস্টের আউটপুট যেমন প্রিন্ট স্টাইল, লগ ফাইলের আউটপুট, বিশেষ কোনো শর্ত অনুযায়ী টেস্টের ফলাফল প্রদর্শন ইত্যাদি কাস্টমাইজ করতে পারেন। আপনি চাইলে টেস্টের ফলাফল HTML ফরম্যাটে, JSON আউটপুট বা অন্য কোনো কাস্টম ফরম্যাটেও রপ্তানি করতে পারেন।
JSON আউটপুটের উদাহরণ:
function JsonReporter() {
this.specDone = function(result) {
const testResult = {
description: result.description,
status: result.status,
error: result.failedExpectations.length > 0 ? result.failedExpectations[0].message : null
};
console.log(JSON.stringify(testResult, null, 2));
};
}
jasmine.getEnv().addReporter(new JsonReporter());
এখানে:
JSON.stringify(): এই মেথডটি ব্যবহার করে টেস্টের ফলাফল JSON ফরম্যাটে কনভার্ট করা হয়েছে, যাতে আপনি সহজে অন্য সিস্টেমে বা লগ ফাইলে এটি প্রক্রিয়া করতে পারেন।
সারাংশ
- Custom Reporter ব্যবহার করে JasmineJS এ আপনি টেস্টের আউটপুট কাস্টমাইজ করতে পারেন এবং সুনির্দিষ্ট আউটপুট ফরম্যাট তৈরি করতে পারেন।
specStarted(),specDone(),suiteStarted(),suiteDone()মেথডের মাধ্যমে আপনি টেস্ট এবং স্যুটের শুরু এবং শেষের সময়ে কাস্টম আউটপুট তৈরি করতে পারেন।- কাস্টম রিপর্টার ব্যবহার করে আপনি টেস্টের ফলাফলকে আরো ইন্টারঅ্যাকটিভ, পরিষ্কার এবং যেকোনো প্রয়োজন অনুযায়ী ফরম্যাটে উপস্থাপন করতে পারেন।
JasmineJS এ টেস্ট ফলাফল লগিং এবং রিপোর্টিং একটি গুরুত্বপূর্ণ ফিচার যা আপনাকে আপনার টেস্টের কার্যকারিতা সম্পর্কে বিস্তারিত ধারণা দেয়। আপনি যদি বড় বা জটিল প্রজেক্টের জন্য কাজ করেন, তবে টেস্টের ফলাফল সঠিকভাবে রিপোর্ট করা এবং লগ করা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি ডেভেলপারদের সাহায্য করে কোডের ত্রুটি শনাক্ত করতে এবং প্রয়োজনীয় পরিবর্তন আনতে। JasmineJS এ টেস্ট ফলাফল লগিং এবং রিপোর্টিংয়ের জন্য কিছু built-in ফিচার রয়েছে এবং আপনি কাস্টম রিপোর্টারও তৈরি করতে পারেন।
JasmineJS এর Built-in Reporter
JasmineJS নিজে কিছু সাধারণ রিপোর্টিং সুবিধা দেয়। এগুলোর মধ্যে প্রধান হল কনসোল রিপোর্টার, যা টেস্টের ফলাফল কনসোলে আউটপুট হিসেবে দেখায়। এই রিপোর্টারটি টেস্টের বিভিন্ন পরিসংখ্যান যেমন পাস, ফেল, স্কিপ ইত্যাদি দেখায়।
কনসোল রিপোর্টার
JasmineJS এর ডিফল্ট রিপোর্টার হল Console Reporter, যা কনসোলে সরাসরি টেস্টের ফলাফল প্রদর্শন করে। এর মাধ্যমে আপনি দেখতে পাবেন কতটি টেস্ট পাস, কতটি ফেল করেছে, এবং কোন টেস্টগুলো সম্পন্ন হয়নি।
describe("Sample Test Suite", function() {
it("should be true", function() {
expect(true).toBe(true);
});
it("should fail", function() {
expect(false).toBe(true); // এটি ফেল করবে
});
});
এই কোডটি চালালে কনসোলে নিম্নলিখিত আউটপুট দেখতে পাবেন:
Sample Test Suite
should be true
should fail
2 specs, 1 failure, 0 skipped, 0 of 2 passed, 50% passed
Finished in 0.001 seconds
Custom Reporter তৈরি করা
যদি আপনি JasmineJS এর ডিফল্ট রিপোর্টারের বাইরে কিছু কাস্টম আউটপুট চাওয়ার মতো প্রয়োজনীয়তা অনুভব করেন, তবে আপনি Custom Reporter তৈরি করতে পারেন। JasmineJS আপনাকে এমন একটি Reporter ক্লাস তৈরি করার সুবিধা দেয়, যা আপনি আপনার টেস্ট রান করার সময় ফলাফল কাস্টমাইজ করে প্রদর্শন করতে পারবেন।
Custom Reporter তৈরি করার উদাহরণ
function MyCustomReporter() {
this.reportSpecResults = function(spec) {
// প্রতিটি টেস্ট স্পেসিফিকেশনের ফলাফল কাস্টম আউটপুটে লগ করা হবে
if (spec.results().failedCount > 0) {
console.log(spec.description + " : Failed");
} else {
console.log(spec.description + " : Passed");
}
};
this.reportSuiteResults = function(suite) {
console.log("Test Suite: " + suite.description);
};
}
jasmine.getEnv().addReporter(new MyCustomReporter());
এখানে:
reportSpecResults: প্রতিটি টেস্ট স্পেসিফিকেশনের ফলাফল (পাস বা ফেল) কাস্টম আউটপুট হিসেবে কনসোলে প্রদর্শিত হবে।reportSuiteResults: টেস্ট সুইটের (Test Suite) নাম এবং ফলাফল কাস্টম আউটপুটে প্রদর্শিত হবে।
Custom Reporter আউটপুট:
Test Suite: Sample Test Suite
should be true : Passed
should fail : Failed
JasmineJS এর কাস্টম রিপোর্টার কনফিগারেশন
JasmineJS এ jasmine.getEnv().addReporter() ফাংশন ব্যবহার করে আপনি একটি কাস্টম রিপোর্টার যোগ করতে পারেন। কাস্টম রিপোর্টার তৈরি করার সময় আপনি reportSpecResults(), reportSuiteResults() ইত্যাদি মেথডগুলিকে কাস্টমাইজ করতে পারেন।
কাস্টম রিপোর্টার কনফিগারেশন:
reportSpecResults(): এটি প্রত্যেকটি টেস্ট স্পেসিফিকেশনের ফলাফল পরিচালনা করে। আপনি এখানে পাস/ফেল সম্পর্কে আউটপুট কাস্টমাইজ করতে পারেন।reportSuiteResults(): এটি পুরো টেস্ট সুইটের ফলাফল পরিচালনা করে।reportRunnerResults(): এটি রানার (Test Runner) এর সম্পূর্ণ ফলাফল রিপোর্ট করে।
JasmineJS Reporting ফিচার ব্যবহার করে Test Results Export করা
আপনি যদি টেস্টের ফলাফল ফাইল হিসেবে সংরক্ষণ করতে চান, তবে JasmineJS এর built-in ফিচারগুলির মাধ্যমে আপনি টেস্ট রিপোর্ট ফাইল তৈরি করতে পারেন। সাধারণত, টেস্ট রিপোর্টের জন্য JUnit XML আউটপুট ফরম্যাট ব্যবহৃত হয়, যা CI/CD সিস্টেমে সহজে ইন্টিগ্রেট করা যায়।
JUnit Reporter ব্যবহার করা:
JUnit রিপোর্টিং ব্যবহারের জন্য আপনাকে Jasmine এর JUnitXmlReporter কনফিগার করতে হবে।
const Jasmine = require('jasmine');
const jasmine = new Jasmine();
const JUnitXmlReporter = require('jasmine-reporters').JUnitXmlReporter;
const junitReporter = new JUnitXmlReporter({
savePath: 'test_results/',
filePrefix: 'results',
consolidateAll: false
});
jasmine.addReporter(junitReporter);
jasmine.execute();
এখানে:
- JUnitXmlReporter ব্যবহার করে টেস্ট ফলাফল JUnit XML ফরম্যাটে আউটপুট করা হবে।
savePath: যেখানে রিপোর্ট ফাইলটি সংরক্ষিত হবে।filePrefix: রিপোর্ট ফাইলের নামের প্রিফিক্স।
এটি চালানোর পর test_results/ ফোল্ডারে একটি results-*.xml ফাইল তৈরি হবে, যা CI/CD টুল যেমন Jenkins এর মাধ্যমে বিশ্লেষণ করা যাবে।
সারাংশ
- Test Results Logging: JasmineJS ডিফল্ট কনসোল রিপোর্টার দিয়ে টেস্টের ফলাফল কনসোলে দেখায়, এবং এর মাধ্যমে আপনি পাস, ফেল বা স্কিপ হওয়া টেস্ট দেখতে পারেন।
- Custom Reporter: JasmineJS আপনাকে কাস্টম রিপোর্টার তৈরি করার সুযোগ দেয়, যা আপনার প্রয়োজন অনুযায়ী টেস্ট ফলাফল কাস্টম আউটপুট করতে সহায়তা করে।
- JUnit XML Reporter: JasmineJS এর মাধ্যমে আপনি JUnit XML ফরম্যাটে রিপোর্ট তৈরি করতে পারেন, যা CI/CD টুলগুলির সাথে ইন্টিগ্রেট করা যায়।
JasmineJS এর এই রিপোর্টিং সুবিধাগুলি আপনাকে টেস্ট ফলাফল বিশ্লেষণে সাহায্য করবে এবং বড় প্রজেক্টে টেস্টিং প্রক্রিয়াকে আরও কার্যকরী করবে।
Read more